/**
 * 请求模块
 * */
// 加载axios模块
import axios from 'axios'
import store from '@/store'

/**
 * 1). axios create(config)
        a.根据指定配置创建一个新的 axios，也就是每个新 axios都有自己的配置
        b.新 axios只是没有取消请求和批量发请求的方法，其它所有语法都是一政的
        c.为什么要设计这个语法?
            需求:项目中有部分接口需要的配置与另一部分接口需要的配置不太一样，如何处理
            解决:创建2个新axios，每个都有自己特有的配置，分别应用到不同变求的接口请求中
 */

// 创建axios请求对象

const request = axios.create({
  // 接口的基础路径
  // 接口错误，会出现跨域现象（协议、地址、端口号不同 --> 跨域）
  baseURL: 'http://toutiao.itheima.net'
})

// 请求拦截器 request：axios请求对象

request.interceptors.request.use(function (config) {
  // 请求发出后，会经过拦截器
  // 在这里设置请求配置，如果有接口访问时需要token令牌，就不用在请求里配置请求
  // console.log('config', config);
  // 解构
  const { user } = store.state
  //   console.log('user', user);
  if (user && user.token) {
    config.headers.Authorization = `Bearer ${user.token}`
  }
  //   返回config
  return config
}, function (error) {
  // 发送请求失败（还没有发送）
  return Promise.reject(error)
})

// 响应拦截器

// 导出请求模块
export default request
